/**
 * Contient l'arbre des workflows.
 */
package ch.ifage.business.dom;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author Christian
 *
 */
public class Workflows implements Serializable {

	/**
	 * serial uid.
	 */
	private static final long serialVersionUID = 5218175044145633306L;
	
	/**
	 * Liste des worflows.
	 */
	private List<Workflow> list = null;

	/**
	 * @return the list
	 */
	public final List<Workflow> getList() {
		return list;
	}
	
	/**
	 * Sous-ensemble des la liste filtrée selon la présence d'une chaîne de caractères dans
	 * l'une des log du workflow.
	 * @param subStringOfLog sous chaîne à rechercher dans la log. Case insensitive.
	 * @return ensemble de workflow dont la log contient la sous-chaîne.
	 */
	public final List<Workflow> getSubSetList(final String subStringOfLog) {
		List<Workflow> subSetList = new ArrayList<Workflow>();
		String subStringOfLogLc = subStringOfLog.toLowerCase();
		
		for (Iterator<Workflow> i = this.list.iterator(); i.hasNext();) {
			Workflow w = (Workflow) i.next();
			if (w.logContainsSubString(subStringOfLogLc)) {
				subSetList.add(w);
			}
		}
		return subSetList; 	
	}
	
	/**
	 * constructeur.
	 */
	public Workflows() {
		super();
		list = new ArrayList<Workflow>();
	}

	/**
	 * Ajout d'un workflow.
	 * @param workflow workflow à ajouter.
	 */
	public final void add(final Workflow workflow) {
		list.add(workflow);
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public final String toString() {
		return "Workflows [list=" + list + "]";
	}
	

}
